﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

using Gra.Seguros.Servicio.Bl;
using Gra.Seguros.Servicio.Be;
using Gra.Seguros.Servicio.Ws.Be;

namespace Gra.Seguros.Servicio.Ws
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de interfaz "ICotizacionSeguro" en el código y en el archivo de configuración a la vez.
    [ServiceContract]
    public interface ICotizacionSeguro
    {
        [OperationContract]
        [WebInvoke(UriTemplate = "listarClientes",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<ClienteWs> listarClientes();

        [OperationContract]
        [WebInvoke(UriTemplate = "listarEjecutivos",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<EjecutivoWs> listarEjecutivos();

        [OperationContract]
        [WebInvoke(UriTemplate = "listarEstados",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<EstadoCotizacionWs> listarEstados();

        [OperationContract]
        [WebInvoke(UriTemplate = "listarTipoSeguros",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<TipoSeguroWs> listarTipoSeguros();

        [OperationContract]
        [WebInvoke(UriTemplate = "listarRamos/{_cTipoSeguro}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<RamoWs> listarRamos(string _cTipoSeguro);

        [OperationContract]
        [WebInvoke(UriTemplate = "listarCotizacionxClientexRamoPendientes/{_cTipoDocumento}/{_nNroDocumento}/{_cRamo}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<CotizacionWs> listarCotizacionxClientexRamoPendientes(string _cTipoDocumento,string _nNroDocumento, string _cRamo);


        [OperationContract]
        [WebInvoke(UriTemplate = "listarCotizacion/{_cCotizacion}/{_fCreacionInicio}/{_fCreacionFin}/{_cCliente}/{_cTipoSeguro}/{_cRamo}/{_cEjecutivo}/{_cEstadoCot}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<CotizacionWs> listarCotizacion(string _cCotizacion, string _fCreacionInicio, string _fCreacionFin, string _cCliente, string _cTipoSeguro, string _cRamo, string _cEjecutivo, string _cEstadoCot);

        [OperationContract]
        [WebInvoke(UriTemplate = "anularCotizacion/{_str_Cotizacion}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        string anularCotizacion(string _str_Cotizacion);

        [OperationContract]
        [WebInvoke(UriTemplate = "listarTipoDocumento",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<TipoDocumentoWs> listarTipoDocumento();

        [OperationContract]
        [WebInvoke(UriTemplate = "listarDepartamento",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<DepartamentoWs> listarDepartamento();

        [OperationContract]
        [WebInvoke(UriTemplate = "listarGenero",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<GeneroWs> listarGenero();

        [OperationContract]
        [WebInvoke(UriTemplate = "listarGrupoSectorEconomico",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<GrupoSectorEconomicoWs> listarGrupoSectorEconomico();

        [OperationContract]
        [WebInvoke(UriTemplate = "listarSectorEconomico/{_cGrupoEconomico}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<SectorEconomicoWs> listarSectorEconomico(string _cGrupoEconomico);

        [OperationContract]
        [WebInvoke(UriTemplate = "listarPersonaNatural/{_cTipoDocumento}/{_nNroDocumento}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<PersonaNaturalWs> listarPersonaNatural(string _cTipoDocumento, string _nNroDocumento);

        [OperationContract]
        [WebInvoke(UriTemplate = "listarPersonaJuridica/{_cTipoDocumento}/{_nNroDocumento}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<PersonaJuridicaWs> listarPersonaJuridica(string _cTipoDocumento, string _nNroDocumento);

        [OperationContract]
        [WebInvoke(UriTemplate = "listarEstadoCivil",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<EstadoCivilWs> listarEstadoCivil();

        [OperationContract]
        [WebInvoke(UriTemplate = "listarLugarCobertura",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<LugarCoberturaWs> listarLugarCobertura();

        [OperationContract]
        [WebInvoke(UriTemplate = "listarMarca",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<MarcaWs> listarMarca();

        [OperationContract]
        [WebInvoke(UriTemplate = "listarModelo/{_cMarca}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<ModeloWs> listarModelo(string _cMarca);

        [OperationContract]
        [WebInvoke(UriTemplate = "listarModeloPeriodo/{_cModelo}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<ModeloPeriodoWs> listarModeloPeriodo(string _cModelo);

        [OperationContract]
        [WebInvoke(UriTemplate = "listarTipoUso",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<TipoUsoWs> listarTipoUso();

        [OperationContract]
        [WebInvoke(UriTemplate = "registrarCotizacionPersonalPersonaNatural",
                Method = "POST",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        string registrarCotizacionPersonalPersonaNatural(CotizacionPersonalVidaWs _CotizacionPersonalVidaWs);

        [OperationContract]
        [WebInvoke(UriTemplate = "registrarCotizacionVehicularPersonaNatural",
                Method = "POST",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        string registrarCotizacionVehicularPersonaNatural(CotizacionPersonalVehicularWs _CotizacionPersonalVehicularWs);

        [OperationContract]
        [WebInvoke(UriTemplate = "registrarCotizacionVehicularPersonaJuridica",
                Method = "POST",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        string registrarCotizacionVehicularPersonaJuridica(CotizacionJuridicaVehicularWs _CotizacionJuridicaVehicularWs);


        [OperationContract]
        [WebInvoke(UriTemplate = "listarAseguradoras",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<AseguradoraWs> listarAseguradoras();

        [OperationContract]
        [WebInvoke(UriTemplate = "listarComisionesEmitidas/{_cGrupo}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<AdministrarComisionesWs> listarComisionesEmitidas(string _cGrupo);

        [OperationContract]
        [WebInvoke(UriTemplate = "listarComisionesNoEncontradas/{_cGrupo}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<AdministrarComisionesWs> listarComisionesNoEncontradas(string _cGrupo);

        [OperationContract]
        [WebInvoke(UriTemplate = "listarComisionesDiferentes/{_cGrupo}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<AdministrarDiferenciasWs> listarComisionesDiferentes(string _cGrupo);

        [OperationContract]
        [WebInvoke(UriTemplate = "cargarComisiones/{_cAseguradora}/{_dArchivo}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        string cargarComisiones(string _cAseguradora, string _dArchivo);

        [OperationContract]
        [WebInvoke(UriTemplate = "enviarNotificacion/{_cPoliza}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        string enviarNotificacion(string _cPoliza);

        [OperationContract]
        [WebInvoke(UriTemplate = "evaluarSeguro/{_titular}/{_edad}/{_coberInter}",
                Method = "GET",
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json)]
        List<EvaluarSeguroWs> evaluarSeguro(string _titular, string _edad, string _coberInter);



    }
}
